package at.donalfonso.model;

import java.util.List;

import org.mozartspaces.capi3.Index;
import org.mozartspaces.capi3.Queryable;

import at.donalfonso.model.Pizza.PizzaEnum;

@Queryable
public class LieferBestellung extends Bestellung {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -3774628685227799732L;
	
	@Index
	private LieferBestellungStatus lieferstatus;
	
	private String adresse = "";
	private String fahrer ="";
	private String loadbalancer = "";
	private boolean adresseExistiert = true; // Zeigt an ob die Adresse existieren soll.

	// nur für Templates des LindaCoordinators
	public LieferBestellung() {
		super();
	}
	
	public LieferBestellung(int filiale) {
		super(filiale);
		lieferstatus = LieferBestellungStatus.BESTELLT;
	}

	public LieferBestellung(int filiale, String adresse, boolean adrExist, List<PizzaEnum> pizzawunsch) {
		super(filiale, pizzawunsch);
		lieferstatus = LieferBestellungStatus.BESTELLT;
		this.adresse = adresse;
		adresseExistiert = adrExist;
	}
	
	public LieferBestellung(LieferBestellung lieferbestellung) {
		super((Bestellung) lieferbestellung);
		this.adresse = lieferbestellung.adresse;
		this.adresseExistiert = lieferbestellung.adresseExistiert;
		this.fahrer = lieferbestellung.fahrer;
		this.loadbalancer = lieferbestellung.loadbalancer;
		this.lieferstatus = lieferbestellung.lieferstatus;
		this.bestellKellner = lieferbestellung.bestellKellner;
	}

	public LieferBestellung(Bestellung bestellung) {
		super(bestellung);
		lieferstatus = LieferBestellungStatus.BESTELLT;
	}
	
	public LieferBestellungStatus getLieferstatus() {
		return lieferstatus;
	}

	public void setLieferstatus(LieferBestellungStatus status) {
		this.lieferstatus = status;
	}

	
	public boolean adresseExistiert(){
		return adresseExistiert;
	}
	
	public void setAdresseExistiert(Boolean ae) {
		adresseExistiert = ae;
	}
	
	public void setAdresse(String adresse){
		this.adresse = adresse;
	}
	
	public String getAdresse(){
		return adresse;
	}

	public void setFahrer(String fahrer){
		this.fahrer = fahrer;
	}
	
	public void setLoadBalancer(String loadbalancer) {
		this.loadbalancer = loadbalancer;
	}
	
	public String getLoadBalancer() {
		return loadbalancer;
	}
	
	@Override
	public String toString() {
		StringBuffer s = new StringBuffer();
		s.append("LieferBestellung: " + getBestellungId() + " (" + getLieferstatus());
		if (lieferstatus == LieferBestellungStatus.BESTELLT) {
			s.append(", offen: " + offeneBestellungen);
		}
		s.append(") " + getAdresse() + " " + " Kellner: " + bestellKellner + 
				" Fahrer: " + fahrer + " LoadBalancer: " + loadbalancer);
		if (lieferstatus != LieferBestellungStatus.VERSCHOBEN) {
			s.append(" -- Pizzen: [");
			for (Pizza p: pizzen) {
				s.append(p + " ");
			}
			s.append("]");
		}
		return s.toString();
	}
}
